Skip to content

Improve portfolio rendering, accessibility, and metadata consistency#10

Merged
celeroncoder merged 3 commits into
masterfrom
codex/react-doctor-fixes
Jun 14, 2026
Merged

Improve portfolio rendering, accessibility, and metadata consistency#10
celeroncoder merged 3 commits into
masterfrom
codex/react-doctor-fixes

Conversation

@celeroncoder

@celeroncoder celeroncoder commented Jun 14, 2026

Copy link
Copy Markdown
Owner

Overview

Resolves the React Review Audit in #3 (score 91/100, 35 warnings) by fixing every flagged diagnostic. The 35 warnings were grouped into five sub-issues, each fixed by a dedicated Claude Sonnet 4.6 worker thread and verified.

Closes #3

Sub-issues

Sub-issue Group Rules Count
#5 Tailwind size shorthand design-no-redundant-size-axes (w-N h-N -> size-N) 13
#6 Hydration mismatch rendering-hydration-mismatch-time (suppressHydrationWarning on date/year) 7
#7 Design & typography no-pure-black-background (bg-black->bg-gray-950), design-no-bold-heading (font-bold->font-semibold), design-no-em-dash-in-jsx-text (em dash -> comma) 7
#8 Server async optimization server-sequential-independent-await (Promise.all), async-defer-await 3
#9 Next.js / a11y / memo nextjs-missing-metadata, nextjs-no-img-element, rerender-memo-with-default-value, click-events-have-key-events, no-static-element-interactions 5

Closes #5, closes #6, closes #7, closes #8, closes #9

Changes

  • Hydration: suppressHydrationWarning on the footer copyright year and on the blog date spans (blogs.tsx, blog/page.tsx, blog/[slug]/page.tsx).
  • Icon sizing: collapsed all matching w-N h-N pairs to the size-N shorthand across cards, projects, blogs, and greeting.
  • Design: replaced bg-black with bg-gray-950 in page.tsx, not-found.tsx, layout.tsx; font-bold -> font-semibold on card headings; em dash -> comma in about.tsx.
  • Server async: wrapped the independent params / getPayload() awaits in Promise.all in both generateMetadata and the page component of blog/[slug]/page.tsx.
  • SEO/a11y/perf: added export const metadata to the homepage, switched the avatar to next/image (with a github.com remote pattern in next.config.ts), extracted the memo default {} to a module-level constant in dithering-shader.tsx, and gave the clickable Card role="button", tabIndex, and an Enter/Space onKeyDown handler.
  • Tooling: gitignore the local .pnpm-store cache and pnpm-workspace.yaml.

Vercel build fix

An earlier commit added a pnpm-workspace.yaml containing only allowBuilds. Vercel's pnpm 9.x interprets any pnpm-workspace.yaml as a workspace root and failed with ERR packages field missing or empty. This is a single-package repo that already declares build-allowed deps via package.json's pnpm.onlyBuiltDependencies, so the file was removed and gitignored, restoring the pnpm configuration to the known-working state of main.

Testing

  • tsc --noEmit: passes (exit 0)
  • next build: compiles successfully, all routes generated (exit 0)
  • grep checks: zero remaining flagged patterns (w-N h-N, bg-black in JSX, font-bold in cards, raw <img>, em dash)
  • pnpm lint: not runnable; eslint is not a dependency in this repo (pre-existing)

Project board

GitHub project celeroncoder-web updated: sub-issues #5-#9 -> Done, #3 -> In review.

Resolves all 35 warnings from issue #3 across grouped sub-issues:
- #5 design-no-redundant-size-axes: collapse w-N h-N to size-N (13)
- #6 rendering-hydration-mismatch-time: suppressHydrationWarning on date elements (7)
- #7 design: bg-black->bg-gray-950, font-bold->font-semibold, em-dash->comma (7)
- #8 server async: Promise.all for independent awaits in blog/[slug]/page (3)
- #9 nextjs/a11y/memo: metadata export, next/image, memo default const, Card keyboard a11y (5)

Closes #5, closes #6, closes #7, closes #8, closes #9
@vercel

vercel Bot commented Jun 14, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
celeroncoder-web Ready Ready Preview, Comment Jun 14, 2026 7:33am

@github-actions

github-actions Bot commented Jun 14, 2026

Copy link
Copy Markdown

React Doctor found no new issues. 🎉

Reviewed by React Doctor for commit 1e02bd7.

pnpm-workspace.yaml (added in 1c09816) only contained allowBuilds and no
'packages:' field. Vercel's pnpm 9.x reads it as a workspace root and fails
with 'packages field missing or empty'. The repo is not a monorepo and already
declares build-allowed deps via package.json 'pnpm.onlyBuiltDependencies', so
remove the file and gitignore it to prevent reintroduction by newer pnpm.
@celeroncoder celeroncoder merged commit c7612cf into master Jun 14, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant